package com.xu.cloud.auth.component.oauth;

import com.xu.cloud.auth.enums.ThirdPartyEnum;
import com.xu.cloud.auth.pojo.bo.OAuth2AccessTokenBO;
import com.xu.cloud.auth.pojo.bo.OAuth2GetAccessTokenReqBO;
import com.xu.cloud.auth.pojo.bo.OAuth2UserInfo;

/**
 * OAuth2三方授权组件
 *
 * @author xuguan
 * @since 2025/2/27
 */
public interface IOAuth2 {

    /**
     * 是否支持授权当前三方应用类型
     */
    boolean support(ThirdPartyEnum thirdPartyEnum);

    /**
     * 通过授权码获取三方应用access_token
     */
    OAuth2AccessTokenBO getAccessToken(String code);

    /**
     * 通过access_token获取三方应用用户信息
     */
    OAuth2UserInfo oauth2UserInfo(OAuth2AccessTokenBO accessTokenBo);

}
